package ciudad;


import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;

@XmlRootElement
public class Esquina {
	private Calle calleNorte;
	private Calle calleSur;
	private Calle calleEste;
	private Calle calleOeste;
	
	public Esquina () {
		this (new Calle(), new Calle(), new Calle(), new Calle());
	}
	
	public Esquina (Calle calleNorte, Calle calleSur, Calle calleEste, Calle calleOeste) {
		this.setCalleNorte(calleNorte);
		this.setCalleSur(calleSur);
		this.setCalleEste(calleEste);
		this.setCalleOeste(calleOeste);
	}
	
	/* Setea la calleNorte por la calle pasada por parametro.*/
	@XmlTransient
	public void setCalleNorte(Calle calleNorte) {
		calleNorte.setEsquinaIzquierda(this);
		this.calleNorte = calleNorte;
	}
	
	/* Devuelve la calleNorte. */
	public Calle getCalleNorte() {
		return this.calleNorte;
	}
	
	/* Setea la calleSur por la calle pasada por parametro.*/
	@XmlTransient
	public void setCalleSur(Calle calleSur) {
		calleSur.setEsquinaDerecha (this);
		this.calleSur = calleSur;
	}
	
	/* Devuelve la calleSur. */
	public Calle getCalleSur() {
		return this.calleSur;
	}
	
	/* Setea la calleEste por la calle pasada por parametro.*/
	@XmlTransient
	public void setCalleEste(Calle calleEste) {
		calleEste.setEsquinaIzquierda (this);
		this.calleEste = calleEste;
	}
	
	/* Devuelve la calleEste. */
	public Calle getCalleEste() {
		return this.calleEste;
	}
	
	/* Setea la calleOeste por la calle pasada por parametro.*/
	@XmlTransient
	public void setCalleOeste(Calle calleOeste) {
		calleOeste.setEsquinaDerecha (this);
		this.calleOeste = calleOeste;
	}
	
	/* Devuelve la calleOeste. */
	public Calle getCalleOeste() {
		return this.calleOeste;
	}

	/* Setea la esquinaNorte por la esquina pasada por parametro. */
	@XmlTransient
	public void setEsquinaNorte (Esquina esquinaNorte) {
		Calle calleNorte = this.getCalleNorte();
		calleNorte.setEsquinaDerecha(esquinaNorte);
		esquinaNorte.setCalleSur(calleNorte);
	}
	
	/* Devuelve la esquinaNorte. */
	public Esquina getEsquinaNorte () {
		return this.calleNorte.getEsquinaDerecha();
	}
	
	/* Setea la esquinaSur por la esquina pasada por parametro. */
	@XmlTransient
	public void setEsquinaSur(Esquina esquinaSur) {
		Calle calleSur = this.getCalleSur();
		calleSur.setEsquinaIzquierda(esquinaSur);
		esquinaSur.setCalleNorte(calleSur);
	}
	
	/* Devuelve la esquinaSur. */
	public Esquina getEsquinaSur () {
		return this.calleSur.getEsquinaIzquierda();
	}
	
	/* Setea la esquinaEste por la esquina pasada por parametro. */
	@XmlTransient
	public void setEsquinaEste (Esquina esquinaEste) {
		Calle calleEste = this.getCalleEste();
		calleEste.setEsquinaDerecha(esquinaEste);
		esquinaEste.setCalleOeste(calleEste);
	}
	
	/* Devuelve la esquinaEste. */
	public Esquina getEsquinaEste () {
		return this.calleEste.getEsquinaDerecha();
	}
	
	/* Setea la esquinaOeste por la esquina pasada por parametro. */
	@XmlTransient
	public void setEsquinaOeste(Esquina esquinaOeste) {
		Calle calleOeste = this.getCalleOeste();
		calleOeste.setEsquinaIzquierda(esquinaOeste);
		esquinaOeste.setCalleEste(calleOeste);
	}
	
	/* Devuelve la esquinaOeste. */
	public Esquina getEsquinaOeste () {
		return this.calleOeste.getEsquinaIzquierda();
	}
	

}
